﻿using System.Collections.Generic;

namespace DBProvider.Providers
{
	public interface IActivityProvider
	{
		Activity CreateActivity(Activity theNewActivity, out string msg);
		bool UpdateActivity(Activity theActivity);
		bool DeleteActivity(int theActivityID);
		ActivityCategory CreateActivityCategory(ActivityCategory theNewActCat, out string msg);
		bool UpdateActivityCategory(ActivityCategory theActivityCategory);
		bool DeleteActivityCategory(int theActCatID);
		List<ActivityCategory> GetAllActivityCategory();
		List<Activity> GetActivityByCategory(int theActCatID, int drugStoreID);
		List<Activity> GetActivityByCategory(int drugStoreID, int theActCatID, int pageIndex, int pageSize, out int totalRecords);
		List<Activity> GetActivityByCategory(int userID, int theActCatID, int drugStoreID);
		List<Activity> GetActivityByCategory(int userID, int drugStoreID, int theActCatID, int pageIndex, int pageSize, out int totalRecords);
		List<Activity> GetAllActivity(int drugStoreID);
		List<Activity> GetAllActivity(int userID, int drugStoreID);
		List<Activity> GetAllActivity(int drugStoreID, int pageIndex, int pageSize, out int totalRecords);
		List<Activity> GetAllActivity(int userID, int drugStoreID, int pageIndex, int pageSize, out int totalRecords);
		Activity GetActivity(int theActID);
		List<Activity> GetMyInitiatActivity(int userID);
		List<Activity> GetMyInitiatActivity(int userID, int pageIndex, int pageSize, out int totalRecords);
		List<Activity> GetMyRegistrationActivity(int userID);
		List<Activity> GetMyRegistrationActivity(int userID, int pageIndex, int pageSize, out int totalRecords);
		List<Activity> GetMyInitiatActivity(int userID, int theActCatID);
		List<Activity> GetMyRegistrationActivity(int userID, int theActCatID);
		List<Activity> GetMyRegistrationActivity(int userID, int theActCatID, int pageIndex, int pageSize, out int totalRecords);
		List<Activity> GetMyInitiatActivity(int userID, int theActCatID, int pageIndex, int pageSize, out int totalRecords);
		bool RegistrationActivity(int userID, int activityID);

		List<Activity> GetNewActivities(int count, int drugStoreID);
		bool CreateRLTActivityAndUser(RLT_ACTIVITYANDUSER theRltActivityAndUser);

		bool DeleteActivity(List<int> activityIDs);

		List<RLT_ActivityAndShareTo> GetActivityAndShareToByActivity(int activityID);
		void CreateActivityAndShareTo(List<RLT_ActivityAndShareTo> lstActivityAndShareTo);
		void SaveActivityAndShareTo(int activityID, List<RLT_ActivityAndShareTo> lstActivityAndShareTo);

		List<Activity> GetNewActivities(int count, int drugStoreID, int userID);
	}
}
